package com.trs.zk.modules.sys.dao;

import com.trs.zk.common.dao.CrudDao;
import com.trs.zk.common.persistence.annotation.MyBatisDao;
import com.trs.zk.modules.sys.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * UserMapper
 *
 * @author msy
 * @date 2019/12/27
 */
@MyBatisDao
public interface UserDao extends CrudDao<User> {

    /**
     * 根据登录名称查询用户
     * @param user 用户
     * @return	user用户
     */
    public User getByLoginName(User user);

    /**
     * 通过OfficeId获取用户列表，仅返回用户id和name（树查询用户时用）
     * @param user 用户
     * @return user 用户
     */
    public List<User> findUserByOfficeId(User user);

    /**
     * 查询全部用户数目
     * @param user 用户
     * @return 用户条数
     */
    public long findAllCount(User user);

    /**
     * 更新用户密码
     * @param user 用户账号密码
     * @return 受影响的条数
     */
    public int updatePasswordById(User user);

    /**
     * 更新登录信息，如：登录IP、登录时间
     * @param user 用户信息
     * @return 受影响的条数
     */
    public int updateLoginInfo(User user);

    /**
     * 删除用户角色关联数据
     * @param user 用户id
     * @return 受影响的条数
     */
    public int deleteUserRole(User user);

    /**
     * 插入用户角色关联数据
     * @param user 用户信息
     * @return 受影响的条数
     */
    public int insertUserRole(User user);

    /**
     * 更新用户信息
     * @param user 用户信息
     * @return 受影响的条数
     */
    public int updateUserInfo(User user);

    /**
     * 更新用户招商信息
     * @param user 用户信息
     * @return 受影响的条数
     */
    public int updateInvestment(User user);

    /**
     * @param id 用户id
     * @return 用户招商信息
     */
    public User getInvestment(int id);

    /**
     * @param ids 用户id，多个用逗号隔开
     * @return
     */
    int deleteByIds(String ids);

    /** 根据id更新用户状态 审核通过
     * @param user
     * @return
     */
    int updateStatusById(User user);

    /**
     * @param id 用户id，多个用逗号隔开禁用
     * @return
     */
    int disableById(String id);

    int insertWeChat(User user);

    User getUserByWechat(String wechat);

    User getByLoginNameWechat(User user);

    int checkVisitorUser(int id);

    User getUserByUnionId(@Param("unionId") String unionId);

    int updateUnionidById(User user);

    int getEveryDayCount(@Param("id") int id, @Param("beginTime") String beginTime, @Param("endTime") String endTime);

    int deleteById(@Param("id") int id);

    /**
     * 添加用户和用户组的关系
     * @param groupIds
     * @return
     */
    int addUserForGroup(@Param("groupIds") String [] groupIds, @Param("id") Integer id);
}
